home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Belgian Amiga Club - ADF Collection
/
BS1 part 34.zip
/
BS1 part 34
/
GFA basic training.adf
/
Copper
/
USER_COPPER I.LST
< prev
next >
Wrap
File List
|
1989-06-01
|
2KB
|
81 lines
' User-Copper I
'
@usercop_laenge
@memory_copperbereit
@user_copper_an
'
REPEAT
PRINT "Bunt nicht?",
UNTIL MOUSEK
'
@user_copper_aus
EDIT
'
> PROCEDURE datas
' Farbe Schwarz ab Screenzeile 0
DATA $0180,$0000
DATA $7701,$fffe
' Farbe Hellrot ab Zeile $77 (=119)
DATA $0180,$0f00
DATA $8001,$fffe
' Farbe Hellgruen ab Zeile $80 (=128)
DATA $0180,$00f0
DATA $8501,$fffe
' Farbe Hellblau ab Zeile $85 (=133)
DATA $0180,$000f
DATA $9001,$fffe
' Farbe Purple ab Zeile $90 (=144)
DATA $0180,$0f0f
DATA $a001,$fffe
' Wieder Schwarz ab Zeile $a0 (=160)
DATA $0180,$0000
DATA $FFFF
RETURN
'
> PROCEDURE usercop_laenge
DO
READ x%
EXIT IF x%=&HFFFF
INC anz& ! Anzahl Worte
LOOP
MUL anz&,2 ! Anzahl Bytes
RESTORE
RETURN
> PROCEDURE memory_copperbereit
mem&=76+anz& ! 76 Bytes werden noch vom System übernommen
u_copadr%=MALLOC(mem&,2) ! Chip-Memory belegen in errechneter Größe
neu_copadr%=u_copadr%
'
altcop%=LPEEK(_GfxBase+50) ! Copper-Automatik-Vector relativ zu GFXBASE retten
startcop%=altcop%+84 ! Anfang der Daten die uebernommen werden müssen
' Startliste des Systems Kopieren
BMOVE startcop%,neu_copadr%,60
' Unsere Liste
CLR zeiger&,x%
RESTORE
' Unseren Adress-Zeiger erhoehen
ADD neu_copadr%,60 ! 60 sind schon drin, darum um 60 erhöhen
'
count%=neu_copadr%+4 ! Bewegungszeiger setzen
'
DO
READ x%
EXIT IF x%=&HFFFF
DPOKE neu_copadr%+zeiger&,x%
ADD zeiger&,2
LOOP
' End Liste des Systems Kopieren
ADD startcop%,60
ADD neu_copadr%,anz&
BMOVE startcop%,neu_copadr%,16
RETURN
> PROCEDURE user_copper_an
VSYNC ! Warten auf Vblank, damit Copper nicht ausliest
LONG{_GfxBase+50}=u_copadr% ! (Unsere) Adresse in den Auto-Vector schreiben
RETURN
> PROCEDURE user_copper_aus
VSYNC ! Warten, damit Copper nicht stört
LONG{_GfxBase+50}=altcop% ! System-Vector zurückschreiben (Orginal Datenliste)
x%=MFREE(u_copadr%,mem&)
RETURN